import tensorflow as tf  # 导入TensorFlow

# 张量创建的时候虽然是用列表嵌套列表来创建的，而且引用的时候也可以用列表的方式引用，
# 但是张量不是列表，他的元素与元素之间用的不是逗号分隔，而是使用空格分隔。

# 创建一个标量，0维张量（标量）
scalar = tf.constant(3)  # 3是标量的值
print(scalar)  # 输出：tf.Tensor(3, shape=(), dtype=int32)

# 创建一个向量，1维张量（向量）
vector = tf.constant([1, 2, 3])  # [1, 2, 3]是向量的值
print(vector)  # 输出：tf.Tensor([1 2 3], shape=(3,), dtype=int32)

# 创建一个矩阵，2维张量（矩阵）
matrix = tf.constant([[1, 2], [3, 4]])  # [[1, 2], [3, 4]]是矩阵的值
print(matrix)

# 创建一个三维张量
tensor3d = tf.constant([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])  # [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]是三维张量的值
print(tensor3d)

# 创建一个四维张量
tensor4d = tf.constant([[[[1, 2], [3, 4]], [[5, 6], [7, 8]]], [[[9, 10], [11, 12]], [[13, 14], [15,
                                                                                                16]]]])  # [[[[1, 2], [3, 4]], [[5, 6], [7, 8]]], [[[9, 10], [11, 12]], [[13, 14], [15, 16]]]]是四维张量的值
print(tensor4d)
'''
tf.Tensor(值, shape=(形状), dtype=数据类型)
这是张量对象的表示方法。
'''

print("形状 shape:", tensor4d.shape)  # 打印张量的形状，返回一个元组
# 输出：(2, 2, 2, 2)表示：第一个维度有两个元素，第二个维度有两个元素，第三个维度有两个元素，第四个维度有两个元素。

print("维度 rank:", tf.rank(tensor4d))  # 打印张量的维度，返回值一个0维的张量（标量），所以会打印这个张量
# 输出：tf.Tensor(4, shape=(), dtype=int32)
# tf.Tensor 是一个张量对象，shape属性表示张量的形状，dtype属性表示张量的数据类型。

print("数据类型 dtype:", tensor4d.dtype)
